package com.reflex.annotations;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface AutoRunClass {
    /**
     * Java注解（Annotations）是一种特殊的标记，可以添加到类、方法、变量、参数以及包上，用于提供关于程序元素的元信息（metadata）。
     * 注解不会直接影响代码的执行，但它们能够在编译时、运行时或部署时被读取和处理，以改变或增强代码的行为。
     *
     * @Target
     *
     * ElementType.TYPE —— 可以用于类、接口（包括注解类型）或枚举类型。
     * ElementType.FIELD —— 可以用于字段或属性。
     * ElementType.METHOD —— 可以用于方法。
     * ElementType.PARAMETER —— 可以用于参数。
     * ElementType.CONSTRUCTOR —— 可以用于构造函数。
     * ElementType.LOCAL_VARIABLE —— 可以用于局部变量。
     * ElementType.ANNOTATION_TYPE —— 可以用于包装注解类型（即用于其他注解的注解）。
     * ElementType.PACKAGE —— 可以用于包声明。
     * ElementType.TYPE_PARAMETER —— 可以用于类型参数（Java 8引入）。
     * ElementType.TYPE_USE —— 可以用于任何使用类型的地方（Java 8引入）。
     *
     *
     * @Retention
     * RetentionPolicy.SOURCE：注解将被编译器丢弃，不会保留在类文件中。
     * 这种注解仅用于编译时，通常用于编译时检查或由编译工具生成代码。
     *
     * RetentionPolicy.CLASS：注解将在编译时被保留到类文件中，但 JVM 在运行时不会保留这些注解。
     * 这是默认的保留策略，适用于需要在运行时之前对类进行某些处理，比如由 JVM 外的框架进行处理。
     *
     * RetentionPolicy.RUNTIME：注解不仅被保留在类文件中，而且在程序运行时可以通过 Java 反射机制读取。
     * 这种策略适用于需要在程序运行期间使用注解信息的场景。
     */

}
